package com.bls.lib.ui.fragment;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

/**
 * 　　  () 　　　  ()
 * 　　  ( ) 　　　( )
 * 　　  ( ) 　　　( )
 * 　　┏┛┻━━━┛┻┓
 * 　　┃　　　━　　　┃
 * 　　┃　┳┛　┗┳　┃
 * 　　┃　　　┻　　　┃
 * 　　┗━┓　　　┏━┛
 * 　　　　┃　　　┃
 * 　　　　┃　　　┗━━━┓
 * 　　　　┃　　　　　　　┣┓
 * 　　　　┃　　　　　　　┏┛
 * 　　　　┗┓┓┏━┳┓┏┛
 * 　　　　　┃┫┫　┃┫┫
 * 　　　　　┗┻┛　┗┻┛
 * ——————————————————
 * Created by BinglingSu on 2017/8/29.
 * <p>
 * 需要重写 getLayoutId()&&findView()   或者   重写 getLayoutView()
 */

public abstract class MvpFragment extends Fragment implements View.OnClickListener {

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View v = getLayoutId() == -1 ? getLayoutView() : inflater.inflate(getLayoutId(), container, false);
        initRoot(v);
        return v;
    }

    /**
     * 添加主布局文件 ,需要重写方法
     *
     * @return xml布局文件
     */
    protected int getLayoutId() {
        return -1;
    }

    /**
     * 代码布局 ,需要重写方法
     *
     * @return 添加主布局文件
     */
    protected View getLayoutView() {
        return null;
    }

    /**
     * 初始化Fragment
     *
     * @param v View
     */
    private void initRoot(View v) {
        initMain();
        initData();
        findView(v);
        initView();
        initListener();
    }

    /**
     * 初始化主要配置
     */
    protected abstract void initMain();

    /**
     * 初始化数据
     */
    protected abstract void initData();

    /**
     * findViewById
     *
     * @param v 主布局
     */
    protected void findView(View v) {
    }

    /**
     * 初始化View
     */
    protected abstract void initView();

    /**
     * 初始化监听事件
     */
    protected abstract void initListener();


    /**
     * 设置View 的点击监听
     *
     * @param r 控件
     */
    protected void setOnClickListener(View... r) {
        for (View i : r) {
            i.setOnClickListener(this);
        }
    }

    @Override
    public void onClick(View v) {

    }
}
